<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 一个类只能实例化一个对象   
        // 应用场景 :
        // 14亿人访问千锋首页 
        // 访问首页 就得链接数据库 
        // 14亿人 14亿个链接池 非常耗资源
        // 为了节约资源  只有一个链接池
        // 如何保证只有一个链接池
        // 单例模式

        class Person{
            constructor (name){
                this.name = name;
            }

        }

        // 需要判断当前类是否已经实例化过
        // 如果实例化过  就返回之前的实例
        // 如果没有实例化过  就实例化一个新的对象

        // 解决方案: 
        // 1. 单独找一个变量  用来存放实例化的对象 初始化为null

        // 2. 如果为 null 就实例化一个新的对象
        // 3 . 如果不为null 就返回之前的对象


        let instance = null;

        function getInstance(name){
            if(!instance){
                instance = new Person(name)
            }
            return  instance
        }

        const p1 = getInstance('张三');
        console.log(p1);
        const p2 = getInstance('李四');
        // const p2 = getInstance('李四');
        // const p2 = getInstance('李四');
        // const p2 = getInstance('李四');
        // const p2 = getInstance('李四');
        // const p2 = getInstance('李四');
        console.log(p2);
        console.log(p1 === p2);



    </script>
</body>
</html>
